Synchronized delivery from multiple devices

ABSTRACT

Synchronizing data delivery from a multitude of devices includes receiving, at a first one of the devices, a transmission containing data and delaying initiation of delivery of the received data from the first device to a module by am amount of time. After passage of the amount of time, delivery of the received data from the first device to the module is initiated. This can allow the first device to initiate delivery of the data to the module in synchronized fashion with other ones of the devices initiating delivery of the data to respective modules.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application is a bypass continuation-in-part of PCT Application No. PCT/US2016/019938, filed Feb. 26, 2016, which claims the benefit of priority of U.S. Application No. 62/121,478, filed Feb. 26, 2015. The contents of the earlier applications are incorporated herein by reference in their entirety.

TECHNICAL FIELD

The present disclosure relates to synchronized delivery from multiple devices.

BACKGROUND

The use of multiple synchronized wireless receivers is a useful tool for various applications. For example, to generate the right lighting effects at a concert requires accurate coordination of multiple lights spread through a concert venue from a single point. Similarly, synchronized communication can be necessary for research and visual effects imaging in which multiple cameras are used to record simultaneously the same event from multiple different vantage points.

When data is to be transmitted to multiple receivers, the following complication can occur. In some applications, data may need to be transmitted to one or more of the receivers multiple times before the data is received successfully. Thus, data may reach one of the receivers before it reaches another receiver. This situation can be problematic for applications in which it is desirable that all the receivers output the data at the same time.

SUMMARY OF THE DISCLOSURE

The present disclosure describes synchronized delivery from multiple devices. For example, a transmission containing data can be received at a first one of the devices, Initiation of delivery of the received data from the first device to a module is delayed by a an amount of time, and after passage of the amount of time, delivery of the received data from the first device to the module is initiated. This can allow the first device to initiate delivery of the data to the module in synchronized fashion with other ones of the devices initiating delivery of the data to respective modules.

In one aspect, for example, a method of synchronizing data delivery from a multitude of devices includes receiving, at a first one of the devices, a transmission containing data and delaying initiation of delivery of the received data from the first device to a module. Initiation of delivery of the data is delayed by a first amount of time based, at least in part, on (i) a predetermined value representing a second amount of time over which a maximum number of attempted data transmissions needs to occur in order to achieve at least a specified probability that all the devices receive the data, and (ii) a time interval indicative of how long it took, since an initial transmission attempt, for the first device to receive the data. The method further includes, after passage of the first amount of time, initiating delivery of the received data from the first device to the module.

Some implementations include one or more of the following features. For example, the method can facilitate allowing the first device to initiate delivery of the data to the module in synchronized fashion with other ones of the devices initiating delivery of the data to respective modules. In some cases, the specified probability that all the device receive the data is at least 99%. In some instances, the first device receives the transmission containing the data at a time that differs from a time at which at least one of the other devices received a transmission containing the data. Further, in some implementations, the first device is powered down for operation in a low-power mode during the first amount of time while the initiation of the delivery of the data is delayed.

The initiation of delivery of the data from the first device can be delayed, for example, by a first amount of time equal to a difference between the predetermined value and the time interval. In some implementations, the transmission containing the data also contains a transmission attempt number indicating a number of times transmission of the data to the first device has been attempted during a particular time period. The particular time period can commence, for example, with the initial transmission attempt and can conclude, for example, when the second amount of time passes. Further, in some cases, the time interval indicative of how long it took, since the initial transmission attempt, for the first device to receive the data can be based at least in part on the transmission attempt number contained in the transmission received by the first device.

In another aspect, the disclosure describes an apparatus that includes a first transceiver operable to receive and transmit communications. A timer tracks a first amount of time based, at least in part, on (i) a predetermined value representing a second amount of time over which a maximum number of attempted data transmissions needs to occur in order to achieve at least a specified probability that each of a plurality of transceivers receives the data, and (ii) a time interval indicative of how long it took, since an initial transmission attempt, for the first transceiver to receive the data. The apparatus includes a processor, and memory storing instructions that, when executed by the processor, cause the processor, in response to receiving a transmission containing data, to delay, by the first amount of time, initiation of delivery of the received data by the first transceiver to another device; and to initiate delivery of the received data by the first transceiver to the other device after passage of the first amount of time.

The disclosure also describes a system that includes a sensor, a multitude of devices operable to receive and send communications, a transmitter coupled to the sensor and operable to send communications containing sensor data to the device, and a multitude of output modules each of which is operable to receive communications from a respective one of the devices. Each particular one of the devices is operable to receive, from the transmitter, a respective communication containing sensor data and to delay initiation of delivery of the received sensor data from the particular device to a respective one of the output modules by a first amount of time. The first amount of time is based, at least in part, on (i) a predetermined value representing a second amount of time over which a maximum number of attempted data transmissions needs to occur in order to achieve at least a specified probability that all the devices receive the sensor data, and (ii) a time interval indicative of how long it took, since an initial transmission attempt by the transmitter, for the particular device to receive the sensor data. Each particular one of the devices also is operable to initiate delivery of the sensor data from the particular device to the respective one of the output modules after passage of the first amount of time.

The amount of delay can be customized for each of the plurality of devices. Some implementations can achieve reliable synchronized delivery from multiple receivers with a high degree of accuracy, which can be desirable, for example, for time sensitive communications such as critical data/signal delivery.

Other aspects, features and advantages will be readily apparent from the following detailed description, the accompanying drawings and the claims.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 illustrates an example of a system for synchronized data delivery.

FIG. 2 illustrates a flow diagram illustrating an example of data delivery from a transmitter perspective.

FIG. 3 illustrates a flow diagram illustrating an example of data delivery from a receiver perspective.

FIG. 4 illustrates another example of a system for synchronized data delivery.

DETAILED DESCRIPTION

The present disclosure describes methods and systems for reliable synchronized data delivery with high accuracy. As shown in FIG. 1, data can be collected by input hardware 10 and transmitted by a transmitter 16 to multiple receivers 12, 14. Examples of the input hardware 10 include sensors operable to sense various physical features. The input hardware 10 is coupled to the transmitter 16, which can include, for example, both a hardware component and a software component. In some instances, the transmitter 16 can be implemented by a small programmable wireless module that includes, for example, a processor 20 with flash and RAM memory 21 and a Bluetooth smart radio 22 for transmitting communications. The processor can be, for example, an ARM® Cortex® processor implemented as a system-on-chips (SoC) that incorporates memory, interfaces and a radio. Instructions can be stored in memory 21 so that the processor 20 is operable to perform the operations described below in connection with the transmitter 16. In some cases, the transmitter 16 may be designed to communicate with the receivers 12, 14 over another type of medium (e.g., fiber optic cables; copper wires).

In the case of wireless communications, each of the receivers 12, 14 also can be implemented by a small programmable wireless module that includes, for example, processor 30 with flash and RAM memory 31 and a Bluetooth smart radio 32 for receiving communications. Instructions can be stored in memory 31 so that the processor 30 is operable to perform the operations described below in connection with the receivers 12, 14. In other cases, the receivers 12, 14 may be designed to communicate with the transmitter 10 over another type of medium (e.g., wires). Each receiver 12, 14 can include a respective hardware component and a respective software component. Further, each receiver 12, 14 is coupled to a respective output module 24, 26 that is, or includes, for example, a processor, a display monitor, light emitting elements (e.g., LEDs) or other device. Depending on the implementation, the output modules 24, 26 can be configured, for example, to process the received data and/or generate a visual indication of the received data.

The techniques described in this disclosure can facilitate synchronization of data transmissions from the outputs of multiple receiver devices 12, 14 such that the receivers output the data at substantially the same time (T_(STN)). Although FIG. 1 shows only two receivers 12, 14, in some applications there may be hundreds or even thousands of receivers. Thus, for ease of explanation, the description in the following paragraphs assumes there are two receivers 12, 14. However, the techniques described here are applicable to systems having a greater number of receivers as well.

Briefly, synchronization can be achieved by delaying transmission of the data from one or more of the receivers by a respective interval of time (I_(DLY)) that is customized for different ones of the receivers such that all the receivers 12, 14 initiate delivery of their data at substantially the same time. The amount of delay is determined in view of a best attempt delivery interval (I_(BST)) that represents the amount of time over which a maximum number of attempted data transmissions needs to occur in order to achieve at least a specified probability (e.g., ≧99%) that all receivers 12, 14 receive the data transmission. Thus, the best attempt delivery interval (I_(BST)) is indicative of the maximum amount of time needed to achieve at least one successful data transmission to all the receivers 12, 14, including the receiver having the greatest probability of failure. For some wireless data transmission applications, the best attempt delivery interval (I_(BST)) is about 3 ms. This value may differ for other applications.

The value of the best attempt delivery interval (I_(BST)) for a particular application can be determined, for example, as follows. Each transmission is assumed to occur over an interval (I_(MED)) that depends, at least in part, on the particular medium over which transmission occur. For wireless data transmissions, the medium interval may be about 1 ms. In the illustrated example, it is assumed for that the first receiver 12 will require no more than two transmission attempts to receive successfully data transmitted by the transmitter 16. Thus, the first receiver 12 is assumed to receive the data within an interval 2*I_(MED) from the initial transmission attempt at time T_(ITR). In contrast, it is assumed, in this example, that the second receiver 14 may need up to three transmission attempts to receive successfully data transmitted by the transmitter 16. Thus, the second receiver 14 is assumed to receive the data within an interval 3* I_(MED) from the initial transmission attempt at time T_(ITR). Since in the illustrated example, there are only two receivers 12, 14, it is assumed that the maximum number of attempted data transmissions for all the receivers to receive the data successfully will be three. The best attempt delivery interval (I_(BST)) can be set equal to the amount of time required for this maximum number of attempted data transmissions. Thus, in this example, I_(BST) is set equal to 3* I_(MED).

During the best attempt delivery interval (I_(BST)), the transmitter 16 repeatedly transmits the same data a specified number of times. Further, the transmitter 16 is configured to encode each attempted data transmission during a given best attempt delivery interval (I_(BST)) with a sequential transmission number (N_(TR)). Thus, for example, the first attempted data transmission can be labelled with N_(TR)=1, the second attempted data transmission can be labelled with N_(TR)=2, the third attempted data transmission can be labelled with N_(TR)=3, and so forth. To track the transmission number, the transmitter 16 can include a counter 18 that is incremented by one for each data transmission during a given best attempt delivery interval. The counter can be re-set after the maximum number of transmission attempts is reached. Since the medium interval (I_(MED)) is fixed for a given implementation, the maximum number (N_(MAX)) of delivery attempts that can take place during the best attempt delivery interval (I_(BST)) is also fixed. In the illustrated example, the maximum number (N_(MAX)) of delivery attempts is three. By checking the transmission number included with the received data, the receiver 12, 14 can determine the number of data transmissions that have been sent so far by the transmitter 16 during the particular best attempt delivery interval.

In the illustrated example, the first receiver 12 receives the data transmission from the transmitter 16 after the second transmission attempt, at a time equal to (2*I_(MED)) following the initial transmission attempt at time T_(ITR). On the other hand, the second receiver 14 might not receive the data transmission successfully until after the third transmission attempt (i.e., upon passage of the entire duration of the best attempt delivery interval (I_(BST))). In order to allow the first receiver 12 and second receiver 14 to deliver the received data to their respective output modules 24, 26 at substantially the same time, the first receiver 12 is configured to delay transmission of the data by an individualized and customized time interval (I_(DLY(1))), which in this example is equal to (1*I_(MED)). In general, each receiver (e.g., 12) is configured to identify the number (N_(TR)) of the transmission attempt encoded in the receive data transmission and, if the encoded transmission attempt number (N_(TR)) in the received transmission is less than the maximum number of transmission attempts allowed, to delay initiation of the delivery of the data to the output module (e.g., 24) by an amount equal to (N_(MAX)−N_(TR))*I_(MED). Thus, the delay will be a multiple of I_(MED). In the event that, for a particular receiver (e.g., 14), the encoded transmission attempt number (N_(TR)) in the received transmission is equal to the maximum number of transmission attempts allowed (e.g., N_(MAX)), then the delay for that receiver will be zero. By using such individualized and customized delays for each receiver, the data can be delivered from each receiver 12, 14 at the same synchronization time (T_(SYN)).

FIGS. 2 and 3 illustrate, respectively, flow diagrams of an example of data transmission and reception from the perspective of the transmitter 16 and from the perspective of one of the receivers 12, 14. As indicated by FIG. 2, when data is be transmitted from the transmitter 16 to one or more receivers 12, 14, the transmitter 16 sets the counter 18 to a value of 1 (at 100). The transmitter 16 then transmits a communication that includes the data as well as the current value stored by the counter 18 (at 110). The counter 18 is increased by 1 (at 120). At 130, the process determines whether another transmission attempt is required and, if so, transmits the same data with the increased count. So long as the counter 18 has not exceeded the maximum number of transmission attempts, the process continues by repeating 110, 120 and 130. If the value in the counter 18 exceeds the maximum number of transmission attempts, the process is completed (at 140). If more data needs to be transmitted by the transmitter 16, the process of FIG. 2 can be repeated.

As indicated by FIG. 3, when one of the receivers (e.g., 12) receives a communication from the transmitter 16 (at 200), the receiver checks the integrity of the data for errors (at 210). If one or more errors are detected, then the process executed by the receiver 12 waits for another data transmission from the transmitter 16 (at 200). Since the transmission from the transmitter 16 contains the transmission number (N_(TR)) as well as the data, the process can determine (at 220) whether the received transmission is the last transmission from the transmitter 16 during the particular best attempt delivery interval (I_(BST)). If the transmission number (N_(TR)) indicates that the transmission is not the last expected transmission (i.e., if N_(TR)≦N_(MAX)), the process calculates (at 230) the number of remaining transmission attempts it expects the transmitter 16 to make (i.e., N_(MAX)−N_(TR)). The receiver 12 then waits (at 240) the same amount of time that performance of the remaining data transmissions during the particular best attempt delivery interval (I_(BST)) is expected to require (i.e., (N_(MAX)−N_(TR))*I_(MED)). The data then is delivered (at 250) from the receiver 12. The other receivers (e.g., 14) also execute the same process of FIG. 3. Thus, delivery of the data by each of the receivers 12, 14 is synchronized (i.e., at time T_(SYN)), and the output modules 23, 26 can process or display the data.

Based on the best attempt delivery interval (I_(BST)), the maximum number of attempts to deliver the data to the receivers 12, 14 may depend on the particular application, but can remain constant for a given application. In the illustrated example, it is assumed that the second receiver 14 successfully receives data by the third attempt at data transmission. This assumption can be considered valid because the best attempt delivery interval (I_(BST)) is selected to correspond to a near-100% rate of success (e.g., ≧99%). However, in the event the second receiver 14, for example, does not receive data within the best attempt delivery interval (I_(BST)), the process can take one of the following actions, depending on the implementation. In some implementations, the process proceeds as if the particular transmission did not occur. In some implementations, if the receiver output was expected, the process uses the last known transmitted state again. In some implementations, if the receiver output was expected, and the last known state is not valid, the process uses a specified default or error state. This latter technique can be used, for example, in situations where it is critical for the receiving device to change state (e.g., if a request to keep a surgical laser on is not received within a specified time period, then the laser should be turned off; or, where repeated transmissions cause a door lock to remain open, if a transmission is not received, then for security, the default state may cause the door lock to be closed).

In some implementations, during the period of delay (I_(DLY)) while a particular receiver (e.g., 12) is waiting for the remainder of the best attempt delivery interval (I_(BST)) to pass, the receiver can be powered down for operation in a low-power mode, so as to reduce energy consumption. The receiver's timer 28 can be used to generate a signal that causes the receiver to power-up at the end of the best attempt delivery interval (I_(BST)) so that the receiver can deliver its data at the synchronization time (T_(SYN)).

Data delivery success may depend, in some instances, on the medium across which the data is delivered to a receiver (e.g., a wired electric medium, fiber optic medium, wireless medium or a combination thereof). For instance, the medium may be “error-free” where data delivery is essentially guaranteed, or “error-prone” where the data delivery is not guaranteed.

Although FIG. 1 illustrates an example of an error-prone system in which the transmitter 16 repeatedly retransmits data to ensure that one or more of the receivers 12, 14 receives the data, the techniques described here also can be useful for substantially error-free systems in which only a single data transmission is needed to achieve close to 100% likelihood (e.g., ≧99%) that all receivers 12, 14 receive the data transmission. For example, as illustrated in FIG. 4, the first and second receivers 12, 14 may be located at significantly different distances from the transmitter 16. Thus, the time required for a single data transmission (I_(MED(1))) to the first receiver 12 may be less than the time required for a single data transmission (I_(MED(2))) to the second receiver 14. Each of the receiver(s) (e.g., 12) that is closer to the transmitter than the farthest receiver 14 can be configured to delay delivery of the data to the output module (e.g., 24) by an individualized amount of time such that all the receivers 12, 14 deliver the data to their respective output modules 24, 26 in a synchronized manner at time T_(SYN).

The types of data contemplated in the foregoing implementations include, but are not limited to, data relating to physical parameters sensed by the following types of sensors as the input hardware 10:

-   -   acoustic, sound, vibration (e.g., geophone, hydrophone,         microphone);     -   automotive, transportation (e.g., air flow meter, air—fuel ratio         meter, blind spot monitor, crankshaft position sensor, defect         detector, engine coolant temperature sensor, Hall effect sensor,         knock sensor, manifold absolute pressure sensor, mass flow         sensor, oxygen sensor, parking sensors, radar gun, speedometer,         speed sensor, throttle position sensor, tire-pressure monitoring         sensor, torque sensor, transmission fluid temperature sensor,         turbine speed sensor, variable reluctance sensor, vehicle speed         sensor , water sensor, wheel speed sensor);     -   chemical (e.g., carbon dioxide sensor, carbon monoxide detector,         catalytic bead sensor, chemical field-effect transistor,         chemiresistor, electrochemical gas sensor,         electrolyte—insulator—semiconductor sensor, fluorescent chloride         sensor, holographic sensor, hydrocarbon dew point analyzer,         hydrogen sensor, hydrogen sulfide sensor, infrared point sensor,         ion-selective electrode, nondispersive infrared sensor,         microwave chemistry sensor, nitrogen oxide sensor, olfactometer,         oxygen sensor, ozone monitor, pellistor, pH glass electrode,         potentiometric sensor, redox electrode, smoke detector, zinc         oxide nanorod sensor);     -   electric current, electric potential, magnetic (e.g., current         sensor, Daly detector, electroscope, electron multiplier,         Faraday cup, galvanometer, Hall effect sensor, Hall probe,         magnetic anomaly detector, magnetometer, MEMS magnetic field         sensor, metal detector, planar Hall sensor, radio direction         finder, voltage detector);     -   flow, fluid velocity (e.g., air flow meter, anemometer, flow         sensor, gas meter, mass flow sensor, water meter);     -   ionizing radiation, subatomic particles (e.g., Geiger counter,         neutron detector);     -   navigation instruments (e.g., air speed indicator, altimeter,         attitude indicator, depth gauge, fluxgate compass, gyroscope,         inertial navigation system, inertial reference unit, magnetic         compass, MHD sensor, ring laser gyroscope, turn coordinator,         variometer, vibrating structure gyroscope, yaw rate sensor);     -   position, angle, displacement, distance, speed, acceleration         (e.g., auxanometer, capacitive displacement sensor, capacitive         sensing, free fall sensor, gravimeter, gyroscopic sensor, impact         sensor, inclinometer, integrated circuit piezoelectric sensor,         laser rangefinder, laser surface velocimeter, linear encoder,         linear variable differential transformer, liquid capacitive         inclinometers, odometer, photoelectric sensor, piezocapactive         sensor, piezoelectric accelerometer, position sensor, rate         sensor, rotary encoder, rotary variable differential         transformer, shock detector, stretch sensor, tilt sensor,         tachometer, ultrasonic thickness gauge, variable reluctance         sensor, velocity receiver);     -   optical, light, imaging, photon (e.g., charge-coupled device,         CMOS sensor, colorimeter, contact image sensor, electro-optical         sensor, flame detector, infra-red sensor, kinetic inductance         detector, fiber optic sensor, optical position sensor,         thermopile laser sensor, photodetector, photodiode,         photomultiplier tubes, phototransistor, photoelectric sensor,         photoionization detector, photomultiplier, photoresistor,         photoswitch, single-photon avalanche diode, superconducting         nanowire single-photon detector, transition edge sensor, visible         light photon counter, wavefront sensor);     -   pressure (e.g., barometer, ionization gauge, piezometer,         pressure sensor, pressure gauge, tactile sensor, time pressure         gauge);     -   force, density, level (e.g., hydrometer, force gauge, level         sensor, load cell, piezocapactive pressure sensor, piezoelectric         sensor, strain gauge, torque sensor);     -   thermal, heat, temperature (e.g., calorimeter, flame detector,         heat flux sensor, infrared thermometer, resistance temperature         detector, resistance thermometer, silicon bandgap temperature         sensor, temperature gauge, thermistor, thermocouple,         thermometer);     -   proximity, presence (e.g., alarm sensor, Doppler radar sensor,         motion detector, occupancy sensor, proximity sensor,         triangulation sensor).

Thus a wide range of sensors, for example, can be used as the input hardware 10, depending on the application. The present techniques, therefore, can apply to data collected from all types of sensors.

In some instances, data can be collected from one or more sources by one receiver. In other instances, data from one source can be delivered to a multitude of receivers. The receivers may be located at different locations and in various arrangements. For example, the receivers may be placed at the head, chest, arms, and legs of a runner.

The best attempt delivery time interval (I_(BST)) may be chosen, for example, based on use-case requirements, medium and/or distance. For example, for short transmission times, a smaller number of data delivery attempts can be used, resulting in a shorter best attempt delivery interval. The best attempt delivery time interval (I_(BST)) can be shorter if, for example, the transmitter and receiver are closer together, such that interference is less likely to impact the receiver relative to the transmitter's signal. Additionally, a particularly error-prone medium may warrant more data delivery attempts. For example, long wireless transmission distances in industrial settings may include interference noise from plant equipment, which can create problems.

In general, the best attempt delivery interval (I_(BST)) is set to be at least as long as the product of the time required for a single data transmission (I_(MED)) and the maximum number of anticipated delivery attempts (N_(MAX)). The synchronized delivery time (T_(SYN)) then occurs at the end of, or shortly after, the best attempt delivery interval (I_(BST)).

The receivers 12, 14 can use, for example, standard algorithms to determine the integrity of the received data (e.g., cyclic redundancy check). If it is determined that the received data contains an error, the receiver can wait for a retransmission of the data by the transmitter 16. The loop for error checking and waiting for retransmission can continue, in some instances, until the synchronized delivery time (T_(SYN)) is reached or until the maximum number of transmission attempts (N_(MAX)) is reached.

As is evident from the example described above, synchronized delivery can be maintained among the receivers 12, 14 even if the time at which they receive the data differs. For example, if the data is delivered to a first receiver 12 on the first transmission, without any error being detected, the receiver 12 can ignore any subsequent retransmissions that occur during the same best attempt delivery interval (I_(BST)). Likewise, if the second receiver 14 successfully receives the data on the first or subsequent retransmission, the second receiver 14 can ignore further retransmissions until after the synchronized delivery time (T_(SYN)). Both receivers 12, 14 then will deliver the data to their respective output modules 24, 26 at the synchronized delivery time (T_(SYN)).

In some implementations, each receiver 12, 14 includes a timer 28 to schedule data delivery. For example, if a transmission is successfully received on the first receiver 12 on the second transmission, and the best attempt delivery method allows for a maximum of five transmissions, the receiver would use its timer 28 to determine passage of time equal to the time required for the remaining three data retransmissions to ensure that delivery of the data to the output module 24 is scheduled accurately at the synchronized delivery time (T_(SYN)). Likewise, if the second receiver 14 successfully receives the data on the first transmission, the receiver would use its timer 28 to determine passage of time equal to the remaining four transmissions to ensure that delivery of the data to the output module 26 is scheduled accurately for the same synchronized delivery time (T_(SYN)) as used by the first receiver 12.

In some implementations, non-transitory storage media stores instructions for determining (1) a medium transmission time (I_(MED)) to one or more receivers, (2) a best attempt delivery interval (I_(BST)) to the receiver(s), and (3) a synchronized delivery time (I_(SYN)) for the receiver(s). In general, the best attempt delivery interval (I_(BST)) will be greater than the medium transmission time (I_(MED)). Instructions stored on the non-transitory storage media also can cause the transmitter 16 and/or receivers 12, 14 to execute the various operations described above.

A high degree of accuracy in synchronous data delivery can be achieved, in some instances, using the present techniques. In some cases, the reception accuracy can approach approximately 1 nanosecond per foot, or 1 microsecond per 100 feet.

Each of the transmitter 16 and the receivers 12, 14 can be implemented as a transceiver that is operable both to transmit and receive. In some implementations, the receivers 12, 14 deliver data via a callback function. In such instances, the synchronized delivery time (T_(SYN)) occurs when the callback function is called.

The following paragraphs describe various other features that are present in some applications.

For latency calculations, the following example can be applied. Given ‘ttx’ as transmission over air and ‘tba’ as best attempt delivery (where ‘tba’ is equal to ‘ttx’ for error free medium, and where ‘tba’ is greater than or equal to ‘ttx’ for error prone medium such that ‘tba’ covers the original transmission plus an application-specific number of error re-transmissions), then the synchronized delivery time ‘tsd’ can be any time greater than or equal to ‘tba’.

As an example, using an error free medium, it can be assumed that each transmission takes slightly less than 3 ms, that ‘tba’ is also slightly less than 3 ms, and that ‘tsd’ can be set at 3 ms. For an error prone medium, if each transmission takes 1 ms, error detection takes 1 ms, a retransmission takes 1 ms, and the application requires a sample every 3 ms such that the implementation can only tolerate a single attempt at retransmission, then the ‘tba’ is 3 ms, and a timer can be employed to set ‘tsd’ at 3 ms.

For accuracy calculations, the following example can be applied. For time overhead (c) required to implement the synchronized delivery, given a timer accuracy (a) and distance of transmission (d), then the accuracy of tsd is influenced by c, a and d. Since, c is relatively constant and a is based on the constant ppm of the crystal, then the variance of tsd is impacted by the only variable, d.

For electronic media (e.g., wired, wireless and optics), the variability of d is impacted by the time it takes the speed of light to traverse the maximum transmission distance. For this calculation, the speed of light can be taken as about 299.792,458 m/μs which is approximately 1,000 feet per microsecond. As such, for electronic media, if tsd is greater than or equal to tba, then the optimum accuracy of tsd can approach 1 microsecond for every 1,000 feet of transmission. For instance, for a wireless 2.4 GHz transceiver with a maximum transmission distance of 1,000 feet, a code variance of 5 microseconds, a maximum distance variance of 1 microsecond, the accuracy is about 10 microseconds.

Various implementations can be used for multiple synchronized receivers to coordinate data collection from multiple points. For example, a single collector may initiate the data collection by sending a request for data to multiple sensors. Since the request is received by the sensors synchronously, each sensor accurately can schedule a time interval to respond in a manner that ensures it is not transmitting at the same time as another sensor. Such a technique can be more efficient than polling (asking a first sensor one for data, then asking a second sensor for data, and so on), can provide a higher degree of correlated data in a smaller time interval, and can be more power efficient. For example, data can be collected from multiple accelerometers to measure the flex of a car or airplane frame at different points during motion. Similarly, flex in bridges supporting traffic or buildings can be measured to assess performance. Such data can aid in civil and structural engineering, infrastructure age studies, among others. In the medical and athletic fields, data can be collected to obtain relative biological information accurately from multiple points on the body. Likewise, the techniques described here can be used in the field of competitive gaming, e.g., by collecting data from multiple gamers to study player activity.

Various aspects of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be, for example, a non-transitory machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The terms “data processing apparatus” and “computer” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.

A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).

Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few. Computer readable media suitable for storing computer program instructions and data include all forms of non volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, aspects of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.

While this specification contains many specifics, these should not be construed as limitations on the scope of the disclosure or of what may be claimed, but rather as descriptions of features specific to particular embodiments. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.

Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.

Various modifications can be made to the foregoing examples within the scope and spirit of the disclosure. Accordingly, other implementations are within the scope of the claims. 

What is claimed is:
 1. A method of synchronizing data delivery from a plurality of devices, the method comprising: receiving, at a first one of the devices, a transmission containing data; delaying initiation of delivery of the received data from the first device to a module, wherein the initiation of delivery of the data is delayed by a first amount of time based, at least in part, on (i) a predetermined value representing a second amount of time over which a maximum number of attempted data transmissions needs to occur in order to achieve at least a specified probability that all the devices receive the data, and (ii) a time interval indicative of how long it took, since an initial transmission attempt, for the first device to receive the data; and after passage of the first amount of time, initiating delivery of the received data from the first device to the module.
 2. The method of claim 1 wherein the first device initiates delivery of the data to the module in synchronized fashion with other ones of the devices initiating delivery of the data to respective modules.
 3. The method of claim 1 wherein the first device receives the transmission containing the data at a time that differs from a time at which at least one of the other devices received a transmission containing the data.
 4. The method of claim 1 further including powering down the first device for operation in a low-power mode during the first amount of time while the initiation of the delivery of the data is delayed.
 5. The method of claim 1 wherein the initiation of delivery of the data from the first device is delayed by a first amount of time equal to a difference between the predetermined value and the time interval.
 6. The method of claim 1 wherein the transmission containing the data also contains a transmission attempt number indicating a number of times transmission of the data to the first device has been attempted during a particular time period.
 7. The method of claim 6 wherein the particular time period commences with the initial transmission attempt and concludes when the second amount of time passes.
 8. The method of claim 6 wherein the time interval indicative of how long it took, since the initial transmission attempt, for the first device to receive the data is based, at least in part, on the transmission attempt number contained in the transmission received by the first device.
 9. The method of claim 1 wherein the first device wirelessly receives the transmission containing the data.
 10. The method of claim 1 wherein the specified probability that all the device receive the data is at least 99%.
 11. An apparatus comprising: a first transceiver operable to receive and transmit communications; and a timer to track a first amount of time based, at least in part, on (i) a predetermined value representing a second amount of time over which a maximum number of attempted data transmissions needs to occur in order to achieve at least a specified probability that each of a plurality of transceivers receives the data, and (ii) a time interval indicative of how long it took, since an initial transmission attempt, for the first transceiver to receive the data; and a processor, and memory storing instructions that, when executed by the processor, cause the processor to: in response to receiving a transmission containing data, delay, by the first amount of time, initiation of delivery of the received data by the first transceiver to another device; and after passage of the first amount of time, initiate delivery of the received data by the first transceiver to the other device.
 12. The apparatus of claim 11 wherein the processor is operable to power down the apparatus for operation in a low-power mode during the first amount of time while the initiation of the delivery of the data is delayed.
 13. The apparatus of claim 11 wherein the processor is operable to delay initiation of delivery of the data by the first transceiver by a first amount of time equal to a difference between the predetermined value and the time interval.
 14. The apparatus of claim 11 wherein the time interval indicative of how long it took, since the initial transmission attempt, for the apparatus to receive the data is based, at least in part, on a transmission attempt number contained in the transmission received by the apparatus, wherein the transmission attempt number indicates a number of times transmission of the data to the apparatus has been attempted during a particular time period.
 15. The apparatus of claim 11 wherein the particular time period commences with the initial transmission attempt and concludes when the second amount of time passes.
 16. The apparatus of claim 11 wherein the first transceiver is operable to wirelessly receive the transmission containing the data.
 17. The apparatus of claim 11 wherein the specified probability that all the transceivers receive the data is at least 99%.
 18. A system comprising: a sensor; a plurality of devices operable to receive and send communications; a transmitter coupled to the sensor and operable to send communications containing sensor data to the plurality of devices; and a plurality of output modules each of which is operable to receive communications from a respective one of the devices, wherein each particular one of the plurality of devices is operable to: receive, from the transmitter, a respective communication containing sensor data; delay initiation of delivery of the received sensor data from the particular device to a respective one of the output modules by a first amount of time based, at least in part, on (i) a predetermined value representing a second amount of time over which a maximum number of attempted data transmissions needs to occur in order to achieve at least a specified probability that all the devices receive the sensor data, and (ii) a time interval indicative of how long it took, since an initial transmission attempt by the transmitter, for the particular device to receive the sensor data; and after passage of the first amount of time, initiate delivery of the sensor data from the particular device to the respective one of the output modules.
 19. The system of claim 18 wherein the plurality of devices are operable to initiate delivery of the sensor data to the respective output modules in synchronized fashion.
 20. The system of claim 18 wherein at least one of the devices receives the respective communication containing the sensor data at a time that differs from a time at which one or more other ones of the devices receive the respective communication containing the sensor data.
 21. The system of claim 18 wherein the amount of delay is customized for each respective one of the plurality of devices. 